package bean;

import entity.Groupe;
import entity.Utilisateur;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import session.UtilisateurFacadeLocal;

/**
 *
 * @author Mély
 */
@ManagedBean
@RequestScoped
public class UtilisateurBean {

    /**
     * Creates a new instance of utilisateurController
     */
    @EJB
    private UtilisateurFacadeLocal utilisateurBean;
    private Utilisateur current;
    private String login;
    private String password;
    private String groupe;

    public String getGroupe() {
        return groupe;
    }

    public void setGroupe(String groupe) {
        this.groupe = groupe;
    }
    
    public UtilisateurBean() {
    }
    
    public List<Utilisateur> getAll() {
        return utilisateurBean.findAll();
    }
    
    public List<Utilisateur> getAllExceptGestionnaire() {
        return utilisateurBean.findAllUtilisateurExceptGestionnaire();
    }
    
    public Utilisateur getCurrent() {
        return current;
    }

    public void setCurrent(Utilisateur current) {
        this.current = current;
    }   
    
    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }
    
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    
    private static String md5(String input){
        String res = "";
        try {
            MessageDigest algorithm = MessageDigest.getInstance("MD5");
            algorithm.reset();
            algorithm.update(input.getBytes());
            byte[] md5 = algorithm.digest();
            String tmp = "";
            for (int i = 0; i < md5.length; i++) {
                tmp = (Integer.toHexString(0xFF & md5[i]));
                if (tmp.length() == 1) {
                    res += "0" + tmp;
                } else {
                    res += tmp;
                }
            }
        } catch (NoSuchAlgorithmException ex) {}
        return res;
    }
    
    private void reset() {
        this.login = null;
        this.password = null;
        this.groupe = null;
        this.current = null;
    }
    
    public void addUtilisateur() {
        Utilisateur utilisateur = new Utilisateur();
        utilisateur.setUserid(login);
        utilisateur.setPassword(md5(password));
        List<Groupe> groupeList = new ArrayList<Groupe>();
        groupeList.add(new Groupe(getGroupe(), getLogin()));
        utilisateur.setGroupeList(groupeList);      
        utilisateurBean.create(utilisateur);
        reset();
    }
    
    public void removeUtilisateur() {        
        utilisateurBean.remove(this.getCurrent());
        reset();
    }
}
